package cn.dlc.com.sys.config.datasource;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: dlc
 * @Date: 2021/12/4 - 10:04
 */
public class ChooseDataSource extends AbstractRoutingDataSource {

    public static Map<String, List<String>> METHOD_TYPE_MAP = new HashMap<>();

    @Override
    protected Object determineCurrentLookupKey() {
        // 返回对应的数据源
        return DataSourceHandler.getDataSource();
    }

    // 设置方法名前缀对应的数据源，不同方法前缀调用不同的数据源
    // 获取的是配置文件中的methodType配置的内容
    // 自动注入配置文件中的属性值
    public void setMethodTypeMap(Map<String, String> map){

        for(String key: map.keySet()) {
            List<String> values = new ArrayList<>();
            // 将值拆开，
            String[] types = map.get(key).split(",");
            for(String type: types) {
                if(!StringUtils.isEmpty(type)) {
                    values.add(type);
                }
            }
            // 一个key对应一堆值，值是list
            METHOD_TYPE_MAP.put(key,values);
        }
    }
}
